<?php if (!defined('BASEPATH'))exit('No direct script access allowed');

class Data_siswa extends CI_Controller
{
	var $max_kelas = 10;

    public function index()
    {
		$data['select_tahun'] = $this->db->from('tahun')->order_by('id_tahun', 'ASC')->get();
		$data['id_tahun'] = $this->db->select('id_tahun')->from('tahun')->where('tahun_aktif', '1')->get()->row()->id_tahun;
        $this->template->admin('admin/v_data_siswa', $data, 2, "Data Siswa");
    }
	
	public function data($tahun = '')
	{
		$id_tahun = $this->input->post('id_tahun');
		if($id_tahun == '' AND $tahun != '') $id_tahun = $tahun;
		if($id_tahun == '') show_404();
		else
		{
			$data_tahun = $this->db->select('tahun_angkatan')->from('tahun')->where('id_tahun', $id_tahun)->get();
			if($data_tahun->num_rows() > 0)
			{
				$data_tahun = $data_tahun->row();
				$data['id_tahun'] = $id_tahun;
				$data['tahun_pelajaran'] = $data_tahun->tahun_angkatan;
				
				$data['rslt_data_siswa'] = $this->db->query('SELECT s.id, s.nomor_induk, s.nama_siswa, s.jenis_kelamin, s.nilai_un, 
				(k.nama_kelas) AS nama_kelas, 
				(tingkat_kelas) AS tingkat_kelas, (t.tahun_angkatan)
				FROM data_siswa s
 LEFT JOIN siswa_kelas sk ON(sk.id_siswa=s.id)
 LEFT JOIN tahun t ON(sk.id_tahun=t.id_tahun)
 LEFT JOIN data_kelas k ON(k.id_kelas=sk.id_kelas AND t.id_tahun=k.id_tahun)
 LEFT JOIN kelas_stat ks ON(ks.id_kelstat=k.id_kelstat)
 WHERE s.id_tahun = '.$id_tahun.'
 GROUP BY s.id
 ORDER BY s.id DESC, sk.id_tahun DESC, t.tahun_aktif DESC, t.tahun_angkatan DESC');
				if($tahun != '')
				{
					$data['select_tahun'] = $this->db->from('tahun')->order_by('id_tahun', 'ASC')->get();
					$this->template->admin('admin/v_data_siswa', $data, 2, "Data Siswa");
				}
				else
				{
					$this->load->view('admin/v_data_siswa_data', $data);
				}
			}
			else
			{
				show_404();
			}
		}
	}
	
	public function tambah($id_tahun = '')
    {
		$this->load->library('form_validation');
		$this->_rule_validation();
		if ($this->form_validation->run() === FALSE)
		{					
			$data['select_tahun'] = $this->db->from('tahun')->order_by('id_tahun', 'DESC')->get();
			
			$data['id'] = '';
			$data['id_tahun'] = $id_tahun;
			$data['nomor_induk'] = '';
			$data['nama_siswa'] = '';
			$data['jenis_kelamin'] = '';
			$data['tempat_lahir'] = '';
			$data['tanggal_lahir'] = '';
			$data['anak_ke'] = '';
			$data['golongan_darah'] = '';
			$data['agama'] = '';
			$data['alamat'] = '';
			$data['kota'] = '';
			$data['wali_murid'] = '';
			$data['propinsi'] = '';
			$data['telepon'] = '';
			$data['nama_ayah'] = '';
			$data['kerjaan_ayah'] = '';
			$data['nama_ibu'] = '';
			$data['kerjaan_ibu'] = '';
			$data['alamat_ortu'] = '';
			$data['kota_ortu'] = '';
			$data['propinsi_ortu'] = '';
			$data['telepon_ortu'] = '';
			$data['nama_wali'] = '';
			$data['kerjaan_wali'] = '';
			$data['alamat_wali'] = '';
			$data['kota_wali'] = '';
			$data['propinsi_wali'] = '';
			$data['nomor_wali'] = '';
			$data['asal_sekolah'] = '';
			$data['nilai_un'] = '';
			$data['no_stb'] = '';
			
			$this->template->admin('admin/v_data_siswa_form', $data, 2, "Tambah Data Siswa");
		}
		else
		{
			$this->_simpan('TAMBAH');
		}		
    }
	
	public function edit($id = null)
    {
		if($id === null) show_404();
		else
		{
			$siswa = $this->db
				->from('data_siswa')
				->where('id', $id)
				->limit(1)
				->get();
			if($siswa->num_rows() == 1)
			{
				$this->load->library('form_validation');
				$this->_rule_validation();
				if ($this->form_validation->run() === FALSE)
				{					
					$siswa = $siswa->row();
					$data['id'] = $siswa->id;
					$data['id_tahun'] = $siswa->id_tahun;
					$data['nomor_induk'] = $siswa->nomor_induk;
					$data['nama_siswa'] = $siswa->nama_siswa;
					$data['jenis_kelamin'] = $siswa->jenis_kelamin;
					$data['tempat_lahir'] = $siswa->tempat_lahir;
					$data['tanggal_lahir'] = $siswa->tanggal_lahir;
					$data['anak_ke'] = $siswa->anak_ke;
					$data['golongan_darah'] = $siswa->golongan_darah;
					$data['agama'] = $siswa->agama;
					$data['alamat'] = $siswa->alamat;
					$data['kota'] = $siswa->kota;
					$data['wali_murid'] = $siswa->wali_murid;
					$data['propinsi'] = $siswa->propinsi;
					$data['telepon'] = $siswa->telepon;
					$data['nama_ayah'] = $siswa->nama_ayah;
					$data['kerjaan_ayah'] = $siswa->kerjaan_ayah;
					$data['nama_ibu'] = $siswa->nama_ibu;
					$data['kerjaan_ibu'] = $siswa->kerjaan_ibu;
					$data['alamat_ortu'] = $siswa->alamat_ortu;
					$data['kota_ortu'] = $siswa->kota_ortu;
					$data['propinsi_ortu'] = $siswa->propinsi_ortu;
					$data['telepon_ortu'] = $siswa->telepon_ortu;
					$data['nama_wali'] = $siswa->nama_wali;
					$data['kerjaan_wali'] = $siswa->kerjaan_wali;
					$data['alamat_wali'] = $siswa->alamat_wali;
					$data['kota_wali'] = $siswa->kota_wali;
					$data['propinsi_wali'] = $siswa->propinsi_wali;
					$data['nomor_wali'] = $siswa->nomor_wali;
					$data['asal_sekolah'] = $siswa->asal_sekolah;
					$data['nilai_un'] = $siswa->nilai_un;
					$data['no_stb'] = $siswa->no_stb;
					
					$data['select_tahun'] = $this->db->from('tahun')->order_by('id_tahun', 'ASC')->get();
					$this->template->admin('admin/v_data_siswa_form', $data, 2, "Ubah Data Siswa");
				}
				else
				{
					$this->_simpan('UBAH');
				}	
			}
			else show_404();
		}	
    }
	
	public function hapus($id = null)
	{
		if($id === null) show_404();
		else
		{
			$data_siswa = $this->db
				->from('data_siswa')
				->where('id', $id)
				->limit(1)
				->get();
			if($data_siswa->num_rows() == 1)
			{
				$this->db->where('id', $id)->delete('data_siswa');
				redirect('admin/data_siswa');
			}
			else show_404();
		}
	}
	
	private function _simpan($proses)
	{
		$id_tahun = $this->input->post('id_tahun');
		$nomor_induk = $this->input->post('nomor_induk');
		$nama_lengkap = $this->input->post('nama_lengkap');
		$jenis_kelamin = $this->input->post('jenis_kelamin');
		$tempat_lahir = $this->input->post('tempat_lahir');
		$tgl_lahir = $this->input->post('tgl_lahir');
		$anak_ke = $this->input->post('anak_ke');
		$goldar = $this->input->post('goldar');
		$agama = $this->input->post('agama');
		$alamat = $this->input->post('alamat');
		$kota = $this->input->post('kota');
		$propinsi = $this->input->post('propinsi');
		$nomor = $this->input->post('nomor');
		$assek = $this->input->post('assek');
		$wali_murid = $this->input->post('wali_murid');
		$nama_ayah = $this->input->post('nama_ayah');
		$kerja_ayah = $this->input->post('kerja_ayah');
		$nama_ibu = $this->input->post('nama_ibu');
		$kerja_ibu = $this->input->post('kerja_ibu');
		$alamat_ortu = $this->input->post('alamat_ortu');
		$kota_ortu = $this->input->post('kota_ortu');
		$propinsi_ortu = $this->input->post('propinsi_ortu');
		$nomor_ortu = $this->input->post('nomor_ortu');
		$nama_wali = $this->input->post('nama_wali');
		$kerja_wali = $this->input->post('kerja_wali');
		$alamat_wali = $this->input->post('alamat_wali');
		$kota_wali = $this->input->post('kota_wali');
		$propinsi_wali = $this->input->post('propinsi_wali');
		$nomor_wali = $this->input->post('nomor_wali');
		$nilai_un = $this->input->post('nilai_un');
		$no_stb = $this->input->post('no_stb');
		$data = array(
					'id_tahun' => $id_tahun,
					'nomor_induk' => $nomor_induk,
					'nama_siswa' => strtoupper($nama_lengkap),
					'jenis_kelamin' => strtoupper($jenis_kelamin),
					'tempat_lahir' => strtoupper($tempat_lahir),
					'tanggal_lahir' => strtoupper($tgl_lahir),
					'anak_ke' => $anak_ke,
					'golongan_darah' => $goldar,
					'agama' => strtoupper($agama),
					'alamat' => $alamat,
					'kota' => strtoupper($kota),
					'wali_murid' => $wali_murid,
					'propinsi' => $propinsi,
					'telepon' => $nomor,
					'nama_ayah' => $nama_ayah,
					'kerjaan_ayah' => $kerja_ayah,
					'nama_ibu' => $nama_ibu,
					'kerjaan_ibu' => $kerja_ibu,
					'alamat_ortu' => $alamat_ortu,
					'kota_ortu' => $kota_ortu,
					'propinsi_ortu' => $propinsi_ortu,
					'telepon_ortu' => $nomor_ortu,
					'nama_wali' => $nama_wali,
					'kerjaan_wali' => $kerja_wali,
					'alamat_wali' => $alamat_wali,
					'kota_wali' => $kota_wali,
					'propinsi_wali' => $propinsi_wali,
					'nomor_wali' => $nomor_wali,
					'nilai_un' => $nilai_un,
					'no_stb' => $no_stb,
					'asal_sekolah' => strtoupper($assek)
					);
		if($proses === 'TAMBAH')
		{
			if($this->db->select('id')->get_where('data_siswa', $data, 1)->num_rows() == 0)
			{
                            if($this->input->post('pilih_kelas') != '' || $this->input->post('pilih_kelas') != null)
                            {
                                $jurusan = $this->input->post('pilih_kelas');
                            }
                            else
                            {
				if($nilai_un >= 32) 
				{
					$jurusan = 'IPA';
				}
				else 
				{
					$jurusan = 'IPS';
				}
                            }
                            if($jurusan == 'IPA')$id_kelstat = 1;
                            elseif($jurusan == 'IPS')$id_kelstat = 2;
                            
				$datakelas = $this->db->query('SELECT k.id_kelas, SUBSTRING(k.nama_kelas,7) + 1 AS nomor_kelas, COUNT(sk.id_siswa) as jumlah_siswa FROM data_kelas k
						INNER JOIN kelas_stat ks ON(ks.id_kelstat=k.id_kelstat)
						LEFT JOIN siswa_kelas sk ON(sk.id_kelas=k.id_kelas)
						WHERE k.id_tahun = '.$id_tahun.'
						AND ks.status_kelas = \''.$jurusan.'\'
						GROUP BY k.id_kelas
						ORDER BY k.nama_kelas DESC');
				
				$id_kelas = '';
				$buat_kelas = FALSE;
				$dapat_kelas = FALSE;
				if($datakelas->num_rows() == 0)
				{
					$buat_kelas = TRUE;
				}
				else
				{
					foreach($datakelas->result() as $v_kelas)
					{
						if($v_kelas->jumlah_siswa < $this->max_kelas)
						{
							$id_kelas = $v_kelas->id_kelas;
							$dapat_kelas = TRUE;
						}
					}
				}
				
				if($buat_kelas == TRUE || $dapat_kelas == FALSE)
				{
					if($buat_kelas == TRUE)
					{
						$simpankelas = array(
										'id_tahun' => $id_tahun,
										'id_kelstat' => $id_kelstat,
										'nama_kelas' => '1 ' . $jurusan . ' 1'
										);
					}
					else
					{
						$simpankelas = array(
										'id_tahun' => $id_tahun,
										'id_kelstat' => $id_kelstat,
										'nama_kelas' => '1 ' . $jurusan . ' '.$datakelas->row()->nomor_kelas
										);
					}
					$this->db->insert('data_kelas', $simpankelas);
					$id_kelas = $this->db->select('id_kelas')->get_where('data_kelas', $simpankelas, 1)->row()->id_kelas;
					$dapat_kelas = TRUE;
				}
				
				if($dapat_kelas == TRUE)
				{
					$this->db->insert('data_siswa', $data);
					$id_siswa = $this->db->select('id')->get_where('data_siswa', $data, 1)->row()->id;
					
					$this->db->insert('siswa_kelas', array(
							'id_tahun' => $id_tahun,
							'id_kelas' => $id_kelas,
							'id_siswa' => $id_siswa
					));
                                        
                                        $this->db->insert('user_login', array(
                                                        'username' => $nomor_induk,
                                                        'password' => $nomor_induk,
                                                        'stat'     => 2,
                                                        'kode_siswa' => $id_siswa
                                        ));
				}
			}
		}
		else if($proses === 'UBAH')
		{
			$id = $this->input->post('id_siswa');
			
			$this->db->where('id', $id);
			$this->db->update('data_siswa', $data);
		}
		redirect('admin/data_siswa');
	}
	
	private function _rule_validation()
	{
		$this->form_validation->set_message('required', '%s harap di isi');
		$this->form_validation->set_message('decimal', '%s harap di isi dengan benar (angka) contoh : 30.50');
		$this->form_validation->set_rules('id_tahun', 'Tahun', 'required|is_natural_no_zero');
		$this->form_validation->set_rules('nomor_induk', 'Nomor Induk Siswa', 'required|max_length[20]|trim');
		$this->form_validation->set_rules('nama_lengkap', 'Nama Lengkap', 'required|max_length[30]|trim');
		$this->form_validation->set_rules('jenis_kelamin', 'Jenis Kelamin', 'required|max_length[1]|alpha|trim');
		$this->form_validation->set_rules('tempat_lahir', 'Tempat Lahir', 'required|max_length[30]|trim');
		$this->form_validation->set_rules('tgl_lahir', 'Tanggal Lahir', 'required|max_length[30]|trim');
		$this->form_validation->set_rules('anak_ke', 'Anak Ke', 'required|is_natural_no_zero|trim');
		$this->form_validation->set_rules('goldar', 'Golongan Darah', 'required|max_length[2]|trim');
		$this->form_validation->set_rules('agama', 'Agama', 'required|max_length[20]|trim');
		$this->form_validation->set_rules('alamat', 'Alamat', 'required|trim');
		$this->form_validation->set_rules('kota', 'kota', 'required|max_length[20]|trim');
		$this->form_validation->set_rules('propinsi', 'propinsi', 'required|max_length[20]|trim');
		$this->form_validation->set_rules('nomor', 'Nomor Tlp / HP', 'required|max_length[20]|trim');
		$this->form_validation->set_rules('assek', 'Asal Sekolah', 'required|max_length[30]|trim');
		$this->form_validation->set_rules('wali_murid', 'Wali Murid', 'required|max_length[30]|trim');
		$this->form_validation->set_rules('nama_ayah', 'Nama Ayah', 'trim');
		$this->form_validation->set_rules('kerja_ayah', 'Pekerjaan Ayah', 'trim');
		$this->form_validation->set_rules('nama_ibu', 'Nama Ibu', 'trim');
		$this->form_validation->set_rules('kerja_ibu', 'Pekerjaan Ibu', 'trim');
		$this->form_validation->set_rules('alamat_ortu', 'Alamat Orang Tua', 'trim');
		$this->form_validation->set_rules('kota_ortu', 'Kota Orang Tua', 'trim');
		$this->form_validation->set_rules('propinsi_ortu', 'Propinsi Orang Tua', 'trim');
		$this->form_validation->set_rules('nomor_ortu', 'Nomor Orang Tua', 'trim');
		$this->form_validation->set_rules('nama_wali', 'Nama Wali', 'trim');
		$this->form_validation->set_rules('kerja_wali', 'Pekerjaan Wali', 'trim');
		$this->form_validation->set_rules('alamat_wali', 'Alamat Wali', 'trim');
		$this->form_validation->set_rules('kota_wali', 'Kota Wali', 'trim');
		$this->form_validation->set_rules('propinsi_wali', 'Propinsi Wali', 'trim');
		$this->form_validation->set_rules('nomor_wali', 'Nomor Wali', 'trim');
		$this->form_validation->set_rules('nilai_un', 'Nilai UN SMP', 'required|decimal|trim');
		$this->form_validation->set_rules('no_stb', 'Nomor STB SMP', 'required|trim');
	}
	
}

/* End of file data_siswa.php */
/* Location: ./application/controllers/admin/data_siswa.php */